///////////////////////////////////////////////////////////
//  Header.h
//  Implementation of the Class Header
//  Created on:      20-Aug-2013 12:06:02 AM
//  Original author: Jakkaphan Aiemcharoenjit
///////////////////////////////////////////////////////////

#if !defined(EA_64EB9CAA_E53D_4d10_9E32_D3FD8C814597__INCLUDED_)
#define EA_64EB9CAA_E53D_4d10_9E32_D3FD8C814597__INCLUDED_

#include "../Interfaces/IHeader.h"
#include <vector>

namespace Data
{
class Header : public IHeader
{

public:
	Header(const String_t& name = _T(""));
	Header(const Header& anotherItem);
	virtual ~Header();
	virtual IObject::ObjectType GetType() const;
	virtual String_t GetName() const;
	virtual IObject* GetChild(unsigned int index) const;
	virtual void AppendChild(IObject* item);
	virtual void SetName(const String_t& name);
	virtual void InsertChild(unsigned int index, IObject* item);
	virtual IObject* RemoveChild(unsigned int index);
	virtual int CountChilds() const;
	virtual IObject* Clone();
	virtual String_t ToXML();
  virtual IObject* operator[](unsigned int index);
	virtual IObject* GetParent();
	virtual void SetParent(IObject* parent);

private:
	IObject::ObjectType m_type;
	String_t m_name;
	std::vector<IObject*> m_childItems;
	IObject* m_parent;

};
}
#endif // !defined(EA_64EB9CAA_E53D_4d10_9E32_D3FD8C814597__INCLUDED_)
